package vargapeter.bet.server;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * A logolást biztosító osztály.
 */
public final class Log {
	private static FileWriter client;
	private static FileWriter server;
	
	/**
	 * A szerver logjába ír. Szálbiztos.
	 * @param messages
	 */
	public synchronized static void logForServer(Object... messages) {
		DateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd_HH:mm:ss");
		Calendar cal = Calendar.getInstance();
		try {
			server.write(dateFormat.format(cal.getTime()));
			server.write("\t");
			for (int i = 0; i < messages.length; i++) {
				server.write(messages[i] + " ");
			}
			server.write("\n");
			server.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * A kliens logjába ír. Szálbiztos.
	 * @param messages
	 */
	public synchronized static void logForClient(Object... messages) {
		DateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd_HH:mm:ss");
		Calendar cal = Calendar.getInstance();
		try {
			client.write(dateFormat.format(cal.getTime()));
			client.write("\t");
			for (int i = 0; i < messages.length; i++) {
				client.write(messages[i] + " ");
			}
			client.write("\n");
			client.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * A logolás használatához mindenképp szükséges meghívni ezt a metódust egyszer.
	 * Létrehozza a log fájlokat a logs mappában. 
	 * A log fájlok nevéhez hozzáfűzöm az időt így egy napon belül futásonként egyediek lesznek.
	 */
	public static void init() {
		try {
			Calendar cal = Calendar.getInstance();
			DateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
			client = new FileWriter(new File("logs\\client" + dateFormat.format(cal.getTime()) + ".txt"), true);
			server = new FileWriter(new File("logs\\server" + dateFormat.format(cal.getTime()) + ".txt"), true);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private Log() {
		super();
	}
}
